



void carregamsgs (FILE *f, char **msgs);
/* Carrega todas as mensagens do arquivo de idioma
   em um vetor de strings alocado dinamicamente
   Entradas: Arquivo de mensagens, vetor inicialmente vazio
*/

int registrosValidos(FILE *f, char *msg[]);
/* Checa cada registro do arquivo de entrada e
   aponta em quais h� algum erro
   Entradas: Arquivo de entrada, vetor de mensagens
   Saidas: TRUE ou FALSE indicando se h� algum erro ou n�o
*/

int arqEntradaValido(char entrada[], char *msg[]);
/* Checa existencia do arquivo de entrada e chama
   registrosValidos.
   Entradas: String contendo nome do arquivo de entrada,
   vetor de mensagens
   Saidas: TRUE ou FALSE indicando se arquivo de entrada
   � valido ou n�o
*/

void liberaMsgs(char *msg[]);
/* Libera mem�ria din�mica ocupada pelo vetor de mensagens,
   ao final da execu��o
   Entradas: o vetor de mensagens
*/

void cardapio(char *msg[], char Entrada[], char Saida[]);
/*Apresenta as op��es ao usuario*/

void converteArquivo(char Entrada[], char Saida[]);
/* Monta um vetor com os dados j� na formata��o em que ser� salva em um arquivo de saida */

void listaArquivoFixo(char *msgs[], char Entrada[]);
/* Monta um vetor com os dados j� na formata��o em que ser� salva em um arquivo de saida */

void listaArquivoVariavel(char *msg[],char Entrada[0],char Saida[0]);
/* Leio um arquivo de saida no formato vari�vel
 * e de acordo com o mesmo � salvo em outro arquivos as
 * informa��es do arquivo e do registro */

void pesquisaRegistro(char *msg[], char Entrada[0], char Saida[0]);
/* Dada uma chave primaria (RA), pesquisa se existe ou nao o registro.
 * Entradas:vetor de mensagens, string contendo o nome do arq de dados
   e string contendo o nome do arq de saida.*/


void extraiChaves(char Entrada[0], char Saida[0]);
/* Cria um arquivo de chaves primarias com suas localiza��es f�sicas no
   arquivo de dados com registro variavel.
   Entradas: string contendo o nome do arquivo de dados
*/

void arqChavesOrd(char *msg[], char Entrada[], char Saida[]);
/*Fun��o que gera um arquivo de chaves ordenados*/

void listacomArqChaves(char *msg[], char Entrada[], char Saida[], char Chaves[]);
/* Cria um arquivo onde todos os registros do arquivo de dados estar�o
   listados, de acordo com a ordem que est�o no arq de dados, a partir
   da extra��o d chaves primarias e suas posi��es no arq de dados.
   Entradas: vetor de mensagens, string contendo o nome do arq de dados
   e string contendo o nome do arquivo com chaves primarias e endere�os
*/

void listaArqChavesOrd(char *msg[], char Entrada[], char Saida[]);
/*Fun��o que gera uma lista das chaves ordenadas*/

void criaArqIndices(char Entrada[0], char Saida[0]);
/*Funcao que cria o arq de indices, caso ela ainda nao exista*/

void pesquisaChave(char *msg[], char Entrada[0], char Saida[0]);

void removeRegistro(char *msg[], char Saida[], char Indice[]);
